// 搜索数据请求数据体定义

// 脚本类型枚举
export const SCRIPT_TYPES = {
  DMG: '伤害脚本',
  PRE: '前置脚本',
  POST: '后置脚本',
  TARGET_CHOOSER: '目标选择脚本',
  PASSIVE_CHECK: '被动生效脚本',
  PASSIVE: '被动脚本',
  PASSIVE_POST: '被动后置脚本',
  BUFF: 'BUFF脚本',
  BUFF_HIT: 'BUFF命中脚本'
} as const

// 脚本类型枚举
export const SCRIPT_TYPES_MAPPING = {
  "伤害脚本": 1,
  "前置脚本": 2,
  "后置脚本": 3,
  "目标选择脚本": 4,
  "被动生效脚本": 5,
  "被动脚本": 6,
  "被动后置脚本": 7,
  "BUFF脚本": 8,
  "BUFF命中脚本": 9
} as const

// 搜索类型枚举
export const SEARCH_TYPES = {
  NONE: 0,
  FUZZY: 1,        // 模糊搜索
  CONTRAIN: 2,     // 包含搜索
  SEQ_CONTRAIN: 3, // 顺序包含搜索
  MATCH_ID: 4      // 按照脚本id查找
} as const

// 常量定义
export const SCRIPT_CONSTANTS = {
    PLACEHOLDER_TEXT: "脚本临时占位",
    PLACEHOLDER_NOTE: "批量占位创建"
} as const

// 脚本文档接口
export interface CombatScriptDocument {
  id: number
  type_str: string
  score: number
  desc: string
  note: string
}

// 脚本类型选项接口
export interface ScriptTypeOption {
  label: string
  value: string
}
// 生成脚本类型选项列表
export const scriptTypeOptions: ScriptTypeOption[] = Object.entries(SCRIPT_TYPES).map(([_, value]) => ({
  label: value,
  value: value
}))

// 添加新的类型定义
export interface ESSearchResponse<T> {
  hits: {
      total: {
          value: number
      }
      hits: Array<{
          _source: T
          _score: number
      }>
  }
}

